
import java.util.Stack;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author yuri
 */
public class Main {

    public static void main(String[] args) {
        Nodo nodoProblema = new Nodo(new QuebraCabeca(3).getEstado(), true);
        Nodo.setObjetivo(Nodo.inicializaObjetivo(nodoProblema.getEstado().length));
        BuscaCega bc = new BuscaCega();
//        System.out.println(bc.buscaEmProfundidadeLimitada(nodoProblema, 5));
        Nodo solucao = bc.buscaEmProfundidadeIterativa(nodoProblema);
        if(solucao!=null){
            do{
                System.out.println(solucao);
                solucao = solucao.getNodoPai();
            }while(solucao!=null);
        }
    }

    private static  void testaFuncionamento() {
        String saida = "-------------";
        Nodo n = new Nodo((new QuebraCabeca(3)).getEstado(), false);
        Stack pilha = n.expandir(n);

        while (!pilha.empty()) {
            Nodo no = (Nodo) pilha.pop();
            for (int i = 0; i < no.getEstado().length; i++) {
                saida += "\n";
                for (int j = 0; j < no.getEstado().length; j++) {
                    saida += "\t+[x:" + i + ",y:" + j + "] " + no.getEstado()[i][j];
                }
            }
            saida += "\n";
        }
        System.out.print(saida);
    }
}
